home *** CD-ROM | disk | FTP | other *** search
/ ASME's Mechanical Engine…ing Toolkit 1997 December / ASME's Mechanical Engineering Toolkit 1997 December.iso / c_lang / varinc.lzh / PROJUTIL.H < prev    next >
Text File  |  1979-11-30  |  5KB  |  88 lines

  1. /* HEADER FILE: PROJUTIL.H */
  2. /*****************************************************************************/
  3. /* projutil.h: project utility library function header file. #include this   */
  4. /*   file near the start of source files containing functions that will call */
  5. /*   any of the project utility functions listed below.                      */
  6. /*****************************************************************************/
  7.  
  8. /*****************************************************************************/
  9. /* Project Utility Function Summary:                                         */
  10. /*                                                                           */
  11. /*     prompt()       Input a string, check match, check length.             */
  12. /*     nprompt()      Prompt for a long int, echo right justified.           */
  13. /*     fprompt()      Prompt for a double, echo right justified.             */
  14. /*     tput()         Print a string at specific screen row and column.      */
  15. /*     ntput()        Print a long integer right justified on screen.        */
  16. /*     ftput()        Print a double right justified on screen.              */
  17. /*     beg_scrn()     Clear screen; print four headings at screen top.       */
  18. /*     match()        Compare a data string against a match string.          */
  19. /*     strrjust()     Right justify a string, padding with blanks.           */
  20. /*     err_warn()     Print a warning message, input Escape.                 */
  21. /*     err_exit()     Call err_warn(), then terminate program.               */
  22. /*     logentry()     Append message text to log file.                       */
  23. /*                                                                           */
  24. /* To learn more about these functions, read their source code.              */
  25. /*****************************************************************************/
  26.  
  27. /* If IMPORT is not already #defined, then do it now. */
  28. #ifndef IMPORT
  29. #define IMPORT extern  
  30. #endif
  31.  
  32. /* Type stepcode is a synonym data type defined below. The typedef statement */
  33. /*   makes stepcode equivalent to type char. Type stepcode declares return   */
  34. /*   values from the functions prompt(), nprompt(), and fprompt().           */
  35. typedef char stepcode;  
  36.  
  37. /* Declare project utility function return and argument types: If your     */
  38. /*   (non-Microsoft) C compiler does not support the declaration of        */
  39. /*   argument types, supply empty () after the function's name.            */
  40. /* These declarations make it possible to call any of these functions from */
  41. /*   anywhere within the source file after this header file is #included.  */
  42. /*   The call will be checked for the proper number and types of arguments */
  43. /*   and proper use of the return value.                                   */
  44. IMPORT stepcode prompt(char[], char[], short, short, flag, short, short);
  45. IMPORT stepcode nprompt(long *, char[], long, long, flag, short, short);
  46. IMPORT stepcode fprompt(double *, char[], double, double, short, 
  47.    short, flag, short, short);
  48. IMPORT void tput(short, short, char[]);
  49. IMPORT void ntput(short, short, long, char[], short);
  50. IMPORT void beg_scrn(char[], char[], char[], char[]);
  51. IMPORT void ftput(short, short, double, short, char[], short);
  52. IMPORT flag match(char[], char[]);
  53. IMPORT void strrjust(char[], short);
  54. IMPORT void err_warn(char[], char[]);
  55. IMPORT void err_exit(char[], char[]);
  56. IMPORT void logentry(char[]); 
  57.  
  58. /* Argument constants and control symbols for prompt(). */
  59. #define PRMTBSIZ 161                                   /* prompt buffer size */
  60. #define MAND 1                        /* for fifth argument: mandatory input */
  61. #define OPT 0                          /* for fifth argument: optional input */
  62.  
  63. #define C_MASK '_'                   /* character to repeat for prompt field */
  64.  
  65. /* User command characters for prompt(). */
  66. #define C_NULL '\x05'                    /* ERASE ENTRY: '\x05'is control-E. */
  67. #define C_BACK '\x12'                       /* BACK UP: '\x12' is control-R. */
  68.                                           /*   Move back to previous prompt. */
  69. #define C_CANC '\x18'                        /* CANCEL: '\x18' is control-X. */
  70.                                               /*   Cancel order and program. */
  71.  
  72. /* These are the possible return values from prompt() that a */
  73. /*   variable with synonym type stepcode may take.           */
  74. #define STEPOK 0                   /* Data were entered; may be null if OPT. */
  75. #define STEPBACK 1                  /* C_BACK was entered; back up a prompt. */
  76. #define STEPCANC 2                /* C_CANC was entered; cancel transaction. */
  77.  
  78. /* Note this statement:                                                   */
  79. /*   enum stepcode {STEPOK, STEPBACK, STEPCANC};                          */
  80. /* This enumeration does almost the same job as the typedef synonym type  */
  81. /*   stepcode and the symbols STEPOK, STEPBACK, and STEPCANC. The         */
  82. /*   difference is that a variable of synonym type stepcode is not an     */
  83. /*   enumerated constant and so may be incremented and decremented. The   */
  84. /*   increment and decrement operators are used here to compute the next  */
  85. /*   step to perform. At some future time, ANSI may decide to permit ++   */
  86. /*   and -- on enumerated type variables.                                 */
  87.  
  88.